#!/bin/bash

echo "🚀 启动8卡优化版 MCTS 无代码推理..."
echo "📊 针对 Qwen2.5-VL-7B (28 attention heads) 8卡环境优化"
echo "🔧 配置：4卡张量并行，16候选/步，6最大深度，12轮迭代"

# === 关键环境变量设置 ===
# vLLM 引擎优化
export VLLM_USE_V1=0                    # 使用稳定的V0引擎
export VLLM_ATTENTION_BACKEND=FLASHINFER # 使用高性能attention后端
export VLLM_WORKER_MULTIPROC_METHOD=spawn  # 优化多进程启动

# CUDA 和多卡优化
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7  # 使用所有8张卡
export CUDA_LAUNCH_BLOCKING=0           # 异步CUDA调用
export CUDA_DEVICE_ORDER=PCI_BUS_ID     # 按PCI顺序排列GPU

# PyTorch 和分布式优化
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:1024,roundup_power2_divisions:16
export TOKENIZERS_PARALLELISM=false    # 避免tokenizer并行冲突

# NCCL 多卡通信优化
export NCCL_IB_DISABLE=1               # 禁用InfiniBand以避免网络问题
export NCCL_P2P_DISABLE=0              # 启用P2P以提高多卡通信效率
export NCCL_SHM_DISABLE=0              # 启用共享内存以提高通信效率

# Ray 分布式优化（vLLM使用Ray进行多卡协调）
export RAY_DEDUP_LOGS=0                # 避免日志重复
export RAY_DISABLE_IMPORT_WARNING=1    # 禁用导入警告

# 内存和性能优化
export OMP_NUM_THREADS=32               # 优化OpenMP线程数（8卡环境）
export MKL_NUM_THREADS=32               # 优化MKL线程数
export VLLM_CPU_KVCACHE_SPACE=80       # CPU KV缓存空间(GB)

echo "✅ 环境变量设置完成"
echo "📈 预期性能提升："
echo "   - 张量并行：4卡 (28 heads ÷ 7 = 4 heads per GPU)"
echo "   - 并发请求：6144"
echo "   - 批处理token：49152"
echo "   - 候选数量：16 (充分利用并行)"
echo "   - 前缀缓存：启用"

# === 执行主程序 ===
python main.py \
    --qaf "eval_data/GSM8K_test.json" \
    --custom_cfg "config/sample_mcts_wo_code.yaml"

echo "🎉 8卡优化版推理完成！" 